// 数组去重

const arr = [1,2,3,3,5,4,4,7,8,9];

// 方法1:set
function unique(arr) {
    return [...new Set(arr)]; 
};
// console.log(uniques(arr))   // [1, 2, 3, 5, 4, 7, 8, 9]

// 方法2：indexOf
function unique1(arr) {
    let res = [];
    for (let i = 0; i < arr.length; i++) {
        if (res.indexOf(arr[i]) === -1) res.push(arr[i]);
    };
    return res;
};

// console.log(unique1(arr));  // [1, 2, 3, 5, 4, 7, 8, 9]

// 方法3：splice
function unique2(arr) {
    for (let i = 0; i < arr.length; i++) {
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                arr.splice(j, 1);
                j--;
            };
        };
    };

    return arr;
};

// console.log(unique2(arr));  // // [1, 2, 3, 5, 4, 7, 8, 9]


// 方法4： sort去重
function unique3(arr) {
    let arr1 = arr.sort((a,b) => a - b);
    let res = [arr1[0]];
    for (let i = 1; i < arr1.length; i++) {
        if (arr1[i] === arr1[i - 1]) {
            res.push(arr1[i]);
        };
    };

    return res;
};


// 方法5：reduce
function unique4(arr) {
    return arr.reduce((prev, cur) => {
        prev.includes(cur) ? prev : [...prev,cur];
    }, []);
};


// 方法6： fliter
function unique5(arr) {
    return arr.filter((item, index, arr) => {
        return arr.indexOf(item, 0) === index;
    });
};


// console.log(unique5(arr));  // // [1, 2, 3, 5, 4, 7, 8, 9]
